package com.zhb.cloud.mail.service;

import com.zhb.cloud.core.JsonReturn;
import com.zhb.cloud.mail.model.Email;

/**
 * @ClassName: EmailLogService
 * @author: zhb
 * @date: 2017年11月22日 下午8:43:43
 * @Description: 邮箱发送记录
 */
public interface EmailService {

	/**
	 * @Title: sendSimpleEmail
	 * @author: zhb
	 * @date: 2017年11月22日 下午9:35:56
	 * @Description:简单邮件发送--文本
	 * @param mail
	 * @return
	 */
	public JsonReturn sendSimpleEmail(Email mail);

	/**
	 * @Title: sendHtml
	 * @author: zhb
	 * @date: 2017年11月22日 下午9:36:28
	 * @Description: 富文本
	 * @param mail
	 * @return
	 * @throws Exception
	 */
	public JsonReturn sendHtml(Email mail);

	/**
	 * 
	 * @Title: sendThymeleaf
	 * @author: zhb
	 * @date: 2017年11月22日 下午9:37:07
	 * @Description: 模版发送 thymeleaf
	 * @param mail
	 * @return
	 */
	public JsonReturn sendThymeleaf(Email mail);

	/**
	 * @Title: sendQueue
	 * @author: zhb
	 * @date: 2017年11月22日 下午9:37:16
	 * @Description: 队列--通过消息队列来发送邮件 场景描述:对于大型的应用一般情况下都是单独的邮件服务集群,
	 *               别的服务有发送邮件的请求全部调用邮件服务,那么可能会出现非常高的并发情况,
	 *               使用队列可以解决这样的问题,当然这样更适合时效性要求不高的服务,一般情况会存在延迟,但是不会延迟太多3分钟之内
	 * @param mail
	 * @return
	 * @throws Exception
	 */
	public JsonReturn sendQueue(Email mail) throws Exception;

	/**
	 * @Title: sendRedisQueue
	 * @author: zhb
	 * @date: 2017年11月22日 下午9:37:27
	 * @Description: Redis 队列
	 * @param mail
	 * @return
	 * @throws Exception
	 */
	public JsonReturn sendRedisQueue(Email mail) throws Exception;

}
